package com.tqyan.service.service;

import com.tqyan.model.controller.response.ChatContentResp;
import com.tqyan.model.dto.ChatContentDTO;
import com.tqyan.model.dto.ChatDTO;
import com.tqyan.model.dto.ChatSettingDTO;
import com.tqyan.model.dto.UserDTO;
import com.tqyan.model.enums.ChatTypeEnum;

import java.util.List;

/**
 * 会话服务
 * <p> <功能详细描述> </p>
 *
 * @author 陈晨
 * @version 1.0
 * @date 2023/4/11
 */
public interface ChatService {
    //    private static final String IMAGE_PATH = "https://www.tqyan.com/chat/image/";
//    private static final String IMAGE_PATH_THUMBNAIL = "https://www.tqyan.com/chat/image/thumbnail/";
    String IMAGE_PATH = "https://chatgpt008.oss-cn-hangzhou.aliyuncs.com/draw/original/";
    String IMAGE_PATH_THUMBNAIL = "https://chatgpt008.oss-cn-hangzhou.aliyuncs.com/draw/thumbnail/";

    /**
     * @description 获取聊天列表
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/12 00:27
     */
    List<ChatDTO> getChatList(String openId);

    /**
     * @description 删除会话
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/19 00:32
     */
    void delete(String openId, long chatId);

    /**
     * @description 获取聊天内容列表
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/12 00:28
     */
    List<ChatContentResp> getChatContentList(String openId, long chatId);

    /**
     * @description 获取绘画内容列表
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/12 00:28
     */
    List<ChatContentResp> getChatContentListByDraw(String openId);

    /**
     * @description 获取指定会话内容
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/12 00:42
     */
    ChatContentResp getChatContent(String openId, long chatId, long chatContentId);

    /**
     * @description 处理会话内容
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/14 18:25
     */
    ChatContentResp handleContent(long userId, ChatContentDTO content);

    /**
     * @description 处理会话内容
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/14 18:25
     */
    void handleContent(ChatContentResp resp);

    /**
     * @description 创建会话
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/14 13:13
     */
    ChatDTO createChat(UserDTO user, String chatName, ChatTypeEnum type);

    /**
     * @description 获取会话设置
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/12 00:29
     */
    ChatSettingDTO getChatSetting(String openId, long chatId);

    /**
     * @description 设置会话模式
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/11 17:48
     */
    boolean setModel(String openId, long chatId, int model);

    /**
     * @description 设置创造力
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/11 17:48
     */
    boolean setCreativeAbility(String openId, long chatId, int creativeAbility);

    /**
     * @description 设置OpenAI Key
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/11 17:49
     */
    boolean setOpenAiKey(String openId, long chatId, String openAiKey);

}


